#ifndef LOGDBO_H
#define LOGDBO_H
#include <memory>
#include <QObject>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>
/*
 * 结构体对应着 数据库里面 用户信息的一条记录
*/
struct UserInfo{
    // 创建一个用户
    static std::shared_ptr<UserInfo> createUser(){
        // 创建一个 共享的结构体指针
        return std::make_shared<UserInfo>();
    }
    // 用户数据
    quint64 user_id;            // 用户ID
    QString username;           // 用户名称
    QString account;            // 账户
    QString password;           // 密码

    QString register_time;      // 注册时间(yyyy-mm-dd hh:MM:ss)
    QString login_time;         // 登录时间：最新一次
};

// 登录界面的数据库对象
// 使用单例设计模式，懒汉方式
class LogDBo
{
private:
    // 1. 构造方法私有化
    LogDBo();
    LogDBo(const LogDBo&) = delete;
    LogDBo& operator=(const LogDBo&) = delete;

public:
    ~LogDBo();
    // 3. 获取单例的静态方法
    static std::shared_ptr<LogDBo> getInstance();

    // 验证用户信息已录取数据库
    std::shared_ptr<UserInfo> checkUserInfo(const QString account,const QString username);
    // 注册用户
    bool registerUser(const std::shared_ptr<UserInfo>& user);
};

#endif // LOGDBO_H

// static的方法可以跨文件使用
